Bộ phận đào tạo của UniLearn cần một báo cáo hiệu suất khóa học cho học kỳ năm 2026 giả định. Hãy tổng hợp các lượt đăng ký đang học, bao gồm cả những sinh viên chưa có điểm.
Chuẩn bị dữ liệu PostgreSQL của bạn
- Mở cơ sở dữ liệu thực hành của bạn trong pgAdmin Query Tool. Bật Auto-commit .
- Chọn Open File và chọn tệp được cung cấp riêng
lab5_setup.sql. - Thực thi toàn bộ tệp. Tệp sẽ chọn schema
lab5. Trong cùng Query Tool đó, sao chép truy vấn kiểm tra từ Code và xác nhận có 36 dòng.
Một dòng có ý nghĩa gì?
Một dòng là một lượt đăng ký của một sinh viên trong một khóa học. S101 học ba khóa học, nên S101 xuất hiện ba lần. Số lượt đăng ký và số sinh viên có thể khác nhau.
Xây dựng báo cáo của bộ phận đào tạo
- Đếm số lượt đăng ký, số điểm đã ghi nhận và số sinh viên riêng biệt.
- Tính tổng và giá trị trung bình cho từng khóa học.
- Giữ lại các khóa học thỏa mãn các điều kiện tổng hợp được yêu cầu.
💡 Đọc trước khi tổng hợp
NULL nghĩa là chưa có điểm được ghi nhận; 0 là một điểm đã được ghi nhận. Các lượt đăng ký đã rút vẫn còn trong bảng nhưng bị loại khỏi báo cáo.Xem trước: 12 trong số 36 lượt đăng ký đầu tiên
Bảng enrolments đầy đủ chứa 20 sinh viên riêng biệt thuộc sáu khóa học. Sáu dòng đã rút sẽ bị lọc khỏi báo cáo. Hãy chạy truy vấn kiểm tra để xem tất cả 36 dòng.
| Lượt đăng ký | Sinh viên | Chương trình | Khóa học | Trạng thái | Điểm | Giờ |
|---|---|---|---|---|---|---|
| E01 | S101 | DSAI | SQL101 | active | 80 | 6 |
| E02 | S102 | CS | SQL101 | active | 60 | 4 |
| E03 | S103 | DSAI | SQL101 | active | NULL | 5 |
| E04 | S104 | IT | SQL101 | withdrawn | 90 | 2 |
| E05 | S101 | DSAI | PY101 | active | 90 | 8 |
| E06 | S105 | CS | PY101 | active | 50 | 6 |
| E07 | S106 | DSAI | PY101 | active | 70 | 7 |
| E08 | S107 | IT | PY101 | active | NULL | 3 |
| E09 | S102 | CS | VIS101 | active | 40 | 4 |
| E10 | S108 | DSAI | VIS101 | active | NULL | 2 |
| E11 | S109 | IT | VIS101 | withdrawn | 100 | 1 |
| E12 | S110 | IT | VIS101 | active | 0 | 1 |
Đọc các cột
enrolment_idđịnh danh một lượt đăng ký;student_idcó thể lặp lại.scorelà điểm trên thang 100, hoặc NULL nếu chưa được ghi nhận.study_hoursghi lại số giờ cho lượt đăng ký này.
💡 Cú pháp PostgreSQL
Giá trị văn bản dùng dấu nháy đơn. Số và
NULL của SQL thì không. Kết thúc mỗi câu lệnh bằng dấu chấm phẩy.SET search_path TO lab5;
SELECT *
FROM enrolments
ORDER BY enrolment_id;Mở Query Tool mới hoặc vừa kết nối lại?
Tệp thiết lập sẽ chọn schema cho kết nối hiện tại của nó. Hãy chạy lệnh sau một lần trong kết nối mới, sau đó sử dụng các truy vấn của bài học như bình thường.
SET search_path TO lab5;